#ifndef LEPTONICZRECONSTRUCTOR
#define LEPTONICZRECONSTRUCTOR
#include "base/EvtData.h"
#include "base/particle.h"
const float MZ=91.1;

struct ZCandidate{  
  particle m_electron;
  particle m_positron;
  int i_electron;
  int i_positron;
  int deltaM;
};

class LeptonicZReconstructor{
  
public:
  LeptonicZReconstructor();
  ~LeptonicZReconstructor();
  LeptonicZReconstructor(EvtData*);
  std::vector<ZCandidate>* ZCandidates();//Accessor method for ZContainer
  virtual void Run();//Fill ZContainer
  ZCandidate getZ();//Accessor to the Z boson found
  static bool minimize(ZCandidate,ZCandidate);//function to find minimum deltaM configuration
private:
  EvtData* evtdata;
  std::vector<ZCandidate>* ZContainer;
  ZCandidate Z;//found Z boson
};

#endif